home *** CD-ROM | disk | FTP | other *** search
- #include "wand_head.h"
-
- extern char *playscreen();
-
- extern int rscreen();
-
- extern int savescore();
-
- int debug_disp = 0;
- int no_passwords = 0;
- int maxscreens;
- char screen[NOOFROWS][ROWLEN+1];
- int edit_mode = 0;
- int saved_game = 0;
-
- main(argc,argv)
- int argc;
- char *argv[];
- {
- char (*frow)[ROWLEN+1] = screen;
- int num = 1,score = 0,bell = 0,maxmoves = 0,fp,x,y;
- char howdead[25],buffer[100],
- *name,*keys,*dead,ch;
- char *malloc();
-
- if(argc == 2)
- {
- if(!strcmp(argv[1], "-e"))
- {
- edit_mode = 1;
- }
- else if(!strcmp(argv[1], "-m"))
- {
- erase_scores();
- return 0;
- }
- else if(!strcmp(argv[1], "-c"))
- {
- /* show credits */
- sprintf(buffer,"%s/credits",SCREENPATH);
- if((fp = open(buffer,O_RDONLY)) == -1) {
- printf(" Sorry - credits unavailable!\n");
- exit(1);
- }
- while(read(fp,&ch,1) == 1)
- printf("%c",ch);
- printf("\n");
- exit(0);
- }
- else if(!strcmp(argv[1], "-s"))
- {
- savescore("-",0,0,"-");
- return 0;
- }
- else if(!strcmp(argv[1], "-f"))
- {
- debug_disp = 1;
- }
- else
- {
- fprintf(stderr,"Usage: %s [ -e | -m | -c | -s | -f ]\n",argv[0]);
- exit(1);
- }
- }
- if(argc > 2)
- {
- fprintf(stderr,"Usage: %s [ -e | -m | -c | -s | -f ]\n",argv[0]);
- exit(1);
- }
-
- /* check for passwords - if file no_pws is in screen dir no pws! */
- sprintf(buffer,"%s/no_pws",SCREENPATH);
- if((fp = open(buffer,O_RDONLY)) != -1) {
- close(fp);
- no_passwords = 1;
- }
-
- /* count available screens */
- for(maxscreens = 0;;maxscreens++) {
- sprintf(buffer,"%s/screen.%d",SCREENPATH,(maxscreens+1));
- if((fp = open(buffer, O_RDONLY)) == -1 )
- break;
- close(fp);
- }
-
- if((name = (char *)getenv("NEWNAME")) == NULL)
- if((name = (char *)getenv("NAME")) == NULL)
- if((name = (char *)getenv("FULLNAME")) == NULL)
- if((name = (char *)getenv("USER")) == NULL)
- if((name = (char *)getenv("LOGNAME")) == NULL)
- #ifdef ASKNAME /* M001 */
- {
- name = malloc(80);
- if (name == NULL) {
- printf("malloc error\n");
- exit(1);
- }
- printf("Name? "); fflush(stdout);
- gets(name);
- if (name[0] == '\0')
- name = "noname";
- }
- #else
- name = "noname";
- #endif
-
- if((keys = (char *)getenv("NEWKEYS")) == NULL)
- {
- keys = malloc(5);
- strcpy(keys,"kjhl");
- }
-
- initscr();
-
- /* MAIN PROGRAM HERE */
-
- CBON; noecho();
-
- if(!edit_mode) {
- for (;;) {
- if (rscreen(num,&maxmoves)) {
- strcpy(howdead,"a non-existant screen");
- break;
- };
- dead = playscreen(&num,&score,&bell,maxmoves,keys);
- if ((dead != NULL) && (*dead == '~')) {
- num = (int)(dead[1]) - 1;
- dead = NULL;
- }
- if (dead != NULL)
- {
- strcpy(howdead,dead);
- break;
- }
- num++;
- };
-
- printf("\n\n%s killed by %s with a score of %d on level %d.\n",name,howdead,score,num);
- }
- else
- {
- if(rscreen(num,&maxmoves))
- {
- for(x=0;x<ROWLEN;x++)
- for(y=0;y<NOOFROWS;y++)
- screen[y][x] = ' ';
- }
- editscreen(num,&score,&bell,maxmoves,keys);
- }
- /* END OF MAIN PROGRAM */
-
- /* SAVE ROUTINES FOR SCORES */
-
- if(!edit_mode)
- {
- if((savescore(howdead,score,num,name) == 0)&&(score != 0))
- printf("\nWARNING: %s error: score not saved!\n\n",argv[0]);
- }
-
- echo();
- CBOFF;
- endwin();
- printf("WANDERER (C)1988 S. Shipway\n");
- return 0;
- }
-